package practice.Day16;

import java.util.Scanner;

/**
 * @Author quan
 * @Description 计算n以内的完全数的个数 100%,做的很顺利
 * @Date 2023/5/25 10:31
 */
public class Num1_AbsoluteNum {
    /**
     * 完全数：28的约数是1,2,4,7,14,28，除去28本身之外，其他数的和相加为28。该数字就是一个完全数。
     * 要求：输入n，输出n以内的完全数的个数
     * @param args
     */
    public static void main(String[] args) {
        //双层循环
//        int n = 28;
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int count = 0;
        // 1、先取出28以内的每个数字
        for (int i = 1; i < n+1; i++) {
            //2、判断该数字是不是完全数
            boolean res =  isAbsoluteNum(i);
            //3、定义一个变量用来计数
            if(res){
                count++;
            }
        }
        System.out.println(count);
    }

    /**
     * 输入一个数字，判断该数字是不是完全数
     * @param n
     */
    private static boolean isAbsoluteNum(int n) {
        int sum = 0;
        for (int i = 1; i < n; i++) {
            //1、先求出该数字的所有约数：不包括自身
            if(n % i == 0){
                //2、求出所有的约数和
                sum += i;
            }
        }
        //3、判断该约数和是否与自身值相等：相等则返回true；否则false
        return sum == n;
    }
}
